package practice.Day1;

import java.util.HashMap;
import java.util.Scanner;

/**
 * @Author quan
 * @Description 删除公共字符串
 * @Date 2023/5/11 17:06
 */
public class Num_RemoveCommonStrUseHash {
    /**
     * 1、用哈希表存储第二个字符和它每个字符出现的次数
     * 2、获取第一个字符串中的每一个字符（key值）在map中的对应的value值（也就是次数）
     * 3、如果获取到的次数为null就写入新的字符串 ----------疑问：这里为什么map中不存在该字符就是null而不是0呢？
     * 4、否则不操作
     * @param args
     */
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
//        String s1 = sc.nextLine();
//        String s2 = sc.nextLine();
        String s1 = "They are Students.";
        String s2 = "aeiouee";
        //1、将字符串2都保存在一个哈希数组中
        //map.get(key) 表示返回key所对应的value值
        //map.put(key,value),表示设置key对应的value值
        //map的key值保存每一个字符，map的value值保存每一个字符出现的次数
        HashMap<Character,Integer> map = new HashMap<>();
        for (int i = 0; i < s2.length(); i++) {
            // 2、如果获取得到的字符的次数是0，就将该字符的次数设置为1
            if(map.get(s2.charAt(i)) == null){
                map.put(s2.charAt(i),1);
            }else{
                // 3、否则就在原基础上对次数进行+1
                int count = map.get(s2.charAt(i));
                map.put(s2.charAt(i),(1+count));
            }
        }
        //4、遍历字符串1中的每一个字符，如果这个字符在map中的次数为0，则将它写入新的字符串res中，否则这个字符就不是我们需要的字符
        //5、创建新的字符串
        String res = "";
        //6、获取s1中的每一个字符，获取这个字符在map中保存的次数
        for (int i = 0; i < s1.length(); i++) {
            //7、如果这个字符在map中的次数是0，就写入新的字符串中
            if(map.get(s1.charAt(i)) == null){
                res += s1.charAt(i);
            }
            //8、否则就不操作
        }
        //9、输出res
        System.out.println(res);

    }
}
